package qc.module.ehs.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import qc.common.core.enums.EhsTaskCategoryTypeEnum;
import qc.common.core.enums.EhsTaskDestObjectTypeEnum;
import qc.common.core.enums.EhsTaskGroupObjectTypeEnum;
import qc.common.core.enums.TimeRangeLengthEnum;

import java.io.Serializable;
import java.util.Date;

/**
 * EHS 任务信息表
 *
 * @author QuCheng Tech
 * @since 2024/11/13
 */
@Data
@TableName("EHS_TASK_INFO")
public class EhsTaskInfo implements Serializable,Cloneable {

    /** 任务ID */
    @TableId
    private String taskid ;
    
    /** 所属组织代码 */
    private String orgcode ;
    
    /** 任务标题 */
    private String tasktitle ;
    
    /** 任务内容;内容、时间、完成情况及要求说明文字 */
    private String taskcontent ;
    
    /** 任务附件 */
    private String taskattachment ;
    
    /** 任务分类名称;安全检查、设备保养、隐患治理、作业活动 */
    private String catname ;
    
    /** 任务大类 */
    private EhsTaskCategoryTypeEnum tasktype ;

    /** 任务分组对象类型;按单元、隐患、自定义3种 */
    private EhsTaskGroupObjectTypeEnum groupobjtype;

    /**
     * 任务目标对象类型;未定义、单元、设备设施、危险源、第一类危险源、隐患
     */
    private EhsTaskDestObjectTypeEnum objtype;

    /**
     * 任务目标对象是否非空
     */
    private Boolean notnull;

    /**
     * 是否需填写检查表
     */
    private Boolean needchecktable;
    
    /**
     * 检查表ID集合;该任务使用的检查表，可以设置多个，系统自动根据单元分类和单元匹配适用的检查表
     */
    private String checktableids;

    /**
     * 是否必须现场签到
     */
    private Boolean needsignin;

    /**
     * 执行结果是否需确认
     */
    private Boolean needconfirm;

    /**
     * 创建人ID
     */
    private Integer inuserid;

    /** 创建人名称 */
    private String inusername ;
    
    /** 创建时间 */
    private Date intm ;
    
    /** 计划开始时间 */
    private Date planbegintm ;
    
    /** 计划截止时间 */
    private Date planendtm ;
    
    /** 计划执行周期类型;在计划起止时间内按日、周、旬、月、季度、年为周期执行 */
    private TimeRangeLengthEnum planfrequencytype ;
    
    /** 每个周期内计划执行次数 */
    private Integer planfrequencycount ;
    
    /** 计划执行总次数;每个周期内要执行的次数，必须达到此数量才能设置任务状态为完成 */
    private Integer plantotalcount ;
    
    /** 是否已派单 */
    private Boolean hasdispatch ;
    
    /** 任务是否执行完成 */
    private Boolean hasfinish ;
    
    /** 任务是否终止/取消 */
    private Boolean hasend ;
    
    /** 实际执行次数 */
    private Integer execcount ;
    
    /** 辨识危险源次数 */
    private Integer execidentifycount ;
    
    /** 上报隐患次数 */
    private Integer exectroublecount ;
}
